package com.bosicen.crm.service;

import java.util.List;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;

import com.bosicen.crm.dao.CommonDao;
import com.bosicen.crm.dao.entity.Company;
import com.bosicen.crm.dao.entity.Conversion;
import com.bosicen.crm.dao.entity.Dealer;
import com.bosicen.crm.dao.entity.OrderNode;
import com.bosicen.crm.dao.entity.OrderProcess;
import com.bosicen.crm.dao.entity.ProductSery;
import com.bosicen.crm.dao.entity.ProductTable;
import com.bosicen.crm.dao.entity.ProductType;
import com.bosicen.crm.dao.entity.ProductUseFlag;

import org.springframework.transaction.annotation.Transactional;

/****
 * 公共信息查询Service层
 * @author Administrator
 *
 */
@Service("commonService")
public class CommonServiceImpl {
	private static Logger logger = Logger.getLogger(CommonServiceImpl.class);    
	@Autowired
	private CommonDao commonDao;
	
	
	//@Transactional(readOnly = false,propagation=Propagation.REQUIRED, rollbackFor=Exception.class)
	
	/****
	 * 查询产品系列列表
	 * @param companyid
	 * @return
	 */
	public List<ProductSery> findProductSery(int companyid) {
		List<ProductSery> list=null;
		try{
			list=this.commonDao.findProductSery(companyid);
		}catch(Exception ex){
			ex.printStackTrace();
			logger.error("查询产品系列列表 抛出异常 ："+ex);
		}
		return list;
	}
	/****
	 * 通过产品id查询所属系列信息
	 * @param productid
	 * @return
	 */
	public ProductSery findProductSeryByProductid(int productid){
		return this.commonDao.findProductSeryByProductid(productid);
	}
	/***
	 * 新增/修改 产品系列 信息
	 * @param p
	 */
	@Transactional(readOnly=false,propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
	public boolean SUProductSery(ProductSery p){
		try{
			this.commonDao.saveOrUpdate(p);
		}catch(Exception ex){
			ex.printStackTrace();
			logger.error("新增/修改 产品系列 抛出异常 ："+ex);
			return false;
		}
		
		return true;
	}
	/****
	 * 删除 产品系列信息
	 * @param p
	 */
	@Transactional(readOnly=false,propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
	public boolean DelProductSery(ProductSery p){
		try{
			this.commonDao.delete(p);
		}catch(Exception ex){
			ex.printStackTrace();
			logger.error("删除 产品系列 抛出异常 ："+ex);
			return false;
		}
		
		return true;
		
	}
	
	
	/****
	 * 查询产品类型列表
	 * @param companyid
	 * @return
	 */
	public List<ProductType> findProductType(int companyid){
		List<ProductType> list=null;
		try{
			list=this.commonDao.findProductType(companyid);
		}catch(Exception ex){
			ex.printStackTrace();
			logger.error("查询产品类型列表  抛出异常 ："+ex);
		}
		return list;
	}
	
	/***
	 * 新增/修改产品类型 信息
	 * @param p
	 */
	@Transactional(readOnly=false,propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
	public boolean SUProductType(ProductType p){
		try{
			this.commonDao.saveOrUpdate(p);
		}catch(Exception ex){
			ex.printStackTrace();
			logger.error("新增/修改产品类型列表  抛出异常 ："+ex);
			return false;
		}
		
		return true;
		
	}
	/****
	 * 删除 产品类型信息
	 * @param p
	 */
	@Transactional(readOnly=false,propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
	public boolean DelProductType(ProductType p){	
		try{
			this.commonDao.delete(p);
		}catch(Exception ex){
			ex.printStackTrace();
			logger.error("删除 产品类型列表  抛出异常 ："+ex);
			return false;
		}
		
		return true;
	}
	
	
	/****
	 * 查询流程表列表
	 * @param companyid
	 * @return
	 */
	public List<OrderProcess> findOrderProcess(int companyid,int oid){
		List<OrderProcess> list=null;
		try{
			list=this.commonDao.findOrderProcess(companyid, oid);
		}catch(Exception ex){
			ex.printStackTrace();
			logger.error("查询流程表列表  抛出异常 ："+ex);
		}
		return list;
	}
	/***
	 * 新增/修改 流程表 信息
	 * @param p
	 */
	@Transactional(readOnly=false,propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
	public boolean SUOrderProcess(OrderProcess p){
		try{
			this.commonDao.saveOrUpdate(p);
		}catch(Exception ex){
			ex.printStackTrace();
			logger.error("新增/修改流程表列表  抛出异常 ："+ex);
			return false;
		}
		
		return true;
		
	}
	
	
	
	
	/****
	 * 查询产品环节列表
	 * @param companyid
	 * @return
	 */
	public List<OrderNode> findOrderNode(int companyid){
		List<OrderNode> list=null;
		try{
			list=this.commonDao.findOrderNode(companyid);
		}catch(Exception ex){
			ex.printStackTrace();
			logger.error("查询产品环节列表  抛出异常 ："+ex);
		}
		return list;
	}
	/***
	 * 新增/修改产品环节 信息
	 * @param p
	 */
	@Transactional(readOnly=false,propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
	public boolean SUOrderNode(OrderNode p){
		
		try{
			this.commonDao.saveOrUpdate(p);
		}catch(Exception ex){
			ex.printStackTrace();
			logger.error("新增/修改产品环节列表  抛出异常 ："+ex);
			return false;
		}
		
		return true;
	}
	/****
	 * 删除产品环节信息
	 * @param p
	 */
	@Transactional(readOnly=false,propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
	public boolean DelOrderNode(OrderNode p){
		try{
			this.commonDao.delete(p);
		}catch(Exception ex){
			ex.printStackTrace();
			logger.error("删除产品环节列表  抛出异常 ："+ex);
			return false;
		}
		
		return true;
	}
	

	/****
	 * 查询经销商列表
	 * @param companyid
	 * @return
	 */
	public List<Dealer> findDealer(int companyid){
		List<Dealer> list=null;
		try{
			list=this.commonDao.findDealer(companyid);
		}catch(Exception ex){
			ex.printStackTrace();
			logger.error("查询经销商列表  抛出异常 ："+ex);
		}
		return list;
	}
	
	/***
	 * 新增/修改 经销商信息
	 * @param p
	 */
	@Transactional(readOnly=false,propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
	public boolean SUDealer(Dealer p){
		try{
			this.commonDao.saveOrUpdate(p);
		}catch(Exception ex){
			ex.printStackTrace();
			logger.error("新增/修改经销商列表  抛出异常 ："+ex);
			return false;
		}
		return true;
	}
	/****
	 * 删除经销商信息
	 * @param p
	 */
	@Transactional(readOnly=false,propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
	public boolean DelDealer(Dealer p){
		try{
			this.commonDao.delete(p);
		}catch(Exception ex){
			ex.printStackTrace();
			logger.error("删除经销商列表  抛出异常 ："+ex);
			return false;
		}
		return true;
	}

	/****
	 * 查询尺寸换算列表列表
	 * @param companyid
	 * @return
	 */
	public List<Conversion> findConversion(int companyid,int type){
		List<Conversion> list=null;
		try{
			list=this.commonDao.findConversion(companyid, type);
		}catch(Exception ex){
			ex.printStackTrace();
			logger.error("查询尺寸换算列表列表  抛出异常 ："+ex);
		}
		return list;
	}
	
	/***
	 * 新增/修改 尺寸换算列表
	 * @param p
	 */
	@Transactional(readOnly=false,propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
	public boolean SUConversion(Conversion p){
		try{
			this.commonDao.saveOrUpdate(p);
		}catch(Exception ex){
			ex.printStackTrace();
			logger.error("新增/修改尺寸换算列表列表  抛出异常 ："+ex);
			return false;
		}
		return true;
	}
	/****
	 * 删除尺寸换算列表
	 * @param p
	 */
	@Transactional(readOnly=false,propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
	public boolean DelConversion(Conversion p){
		try{
			this.commonDao.DelConversion(p);
		}catch(Exception ex){
			ex.printStackTrace();
			logger.error("删除尺寸换算列表列表  抛出异常 ："+ex);
			return false;
		}
		return true;
	}
	
	
	/****
	 * 查询注册企业列表
	 * @param companyid
	 * @return
	 */
	public List<Company> findCompany(int companyid){
		List<Company> list=null;
		try{
			list=this.commonDao.findCompany(companyid);
		}catch(Exception ex){
			ex.printStackTrace();
			logger.error("查询注册企业列表  抛出异常 ："+ex);
		}
		return list;
	}
	
	/****
	 * 查询注册企业列表
	 * @param companyid
	 * @return
	 */
	public List<Company> findCompanylist(){
		List<Company> list=null;
		try{
			list=this.commonDao.findCompanylist();
		}catch(Exception ex){
			ex.printStackTrace();
			logger.error("查询注册企业列表  抛出异常 ："+ex);
		}
		return list;
	}
	
	/***
	 * 新增/修改 注册企业信息
	 * @param p
	 */
	@Transactional(readOnly=false,propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
	public boolean SUCompany(Company p){
		try{
			this.commonDao.saveOrUpdate(p);
		}catch(Exception ex){
			ex.printStackTrace();
			logger.error("新增/修改注册企业列表  抛出异常 ："+ex);
			return false;
		}
		return true;
	}
	/****
	 * 删除 注册企业信息
	 * @param p
	 */
	@Transactional(readOnly=false,propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
	public boolean DelCompany(Company p){
		try{
			this.commonDao.delete(p);
		}catch(Exception ex){
			ex.printStackTrace();
			logger.error("删除 注册企业列表  抛出异常 ："+ex);
			return false;
		}
		return true;
	}
	
	
	/***
	 * 根据类型查询线条/面板列表
	 * @param t
	 * @return
	 */
	public List<ProductTable> findProductTable(ProductTable t){
		return this.commonDao.findProductTable(t);
	}
	
	/***
	 * 查询单个线条/面板详细信息
	 * @param id
	 * @return
	 */
	public ProductTable findProductTableInfo(int id){
		return  this.commonDao.findProductTableInfo(id);
	}
	/****
	 * 查询产品标志的列表
	 * @param id
	 * @return
	 */
	public List<ProductUseFlag> findProductUseFlagList(ProductUseFlag f){
		return this.commonDao.findProductUseFlagList(f);
	}
}
